﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Model;
using Interfaces;
using System.Collections;

namespace Controller
{
    public class ClsSystemController
    {
        ClsFejllogningCollection fejlCol;
        ClsMedarbejderCollection medarbCol;
        ClsMødeCollection mødeCol;
        ClsDBController dbController;

        ClsMedarbejder aktuelMedarbejder;
        ClsMøde aktuelMøde;

        public ClsSystemController()
        {
            fejlCol = new ClsFejllogningCollection();
            medarbCol = new ClsMedarbejderCollection();
            mødeCol = new ClsMødeCollection();
            dbController = new ClsDBController(this);
        }

        public void Ansæt(int medarbejderID, string navn, string mail)
        {
            aktuelMedarbejder = medarbCol.Ansæt(medarbejderID, navn, mail);
            dbController.OpdaterMedarbejdere(medarbejderID, navn, mail);
        }

        public void FyrMedarbejder(int medarbejderID)
        {
            aktuelMedarbejder = medarbCol.FyrMedarbejder(medarbejderID);
        }

        public void OpretMøde(int mødeID, DateTime mødeDato, string mødeSted, string mødeBeskrivelse)
        {
            aktuelMøde = mødeCol.OpretMøde(mødeID, mødeDato , mødeSted, mødeBeskrivelse);
        }

        public void SletMøde(int mødeID)
        {
            aktuelMøde = mødeCol.SletMøde(mødeID);
        }

        public List<String> GetmedarbNavne()
        {
            return medarbCol.GetmedarbNavne();
        }

        public List<String> GetMødeID()
        {
            return mødeCol.GetMødeID();
        }


        public string RegistrerFejl(string fejlType, string fejlStacking, string fejlPrioritering, DateTime fejlDato)
        {
            if (fejlType == "Input string was not in a correct format.") // alle fejl med denne tekst
            {
                fejlPrioritering = "Lav";  // vil få ændret deres priorritet til "Lav"
            }

            if (fejlType == "Object reference not set to an instance of an object.")
            {
                fejlPrioritering = "Høj";
            }

            if (fejlType == "Could not find stored procedure 'OpdaterMedarbejdere'.")
            {
                fejlPrioritering = "Høj";
            }

            if (fejlType == "Specified cast is not valid.")
            {
                fejlPrioritering = "Mellem";
            }

            string besked = fejlCol.RegistrerFejl(fejlType, fejlStacking, fejlPrioritering, fejlDato);
            dbController.OpdaterFejllog(fejlType, fejlStacking, fejlPrioritering, fejlDato); // Opdater databasen
            return besked;
        }
        public void TilknytMøde(int medarbejderID, int mødeID)
        {
            aktuelMedarbejder = medarbCol.FindMedarbejder(medarbejderID);
            aktuelMøde = mødeCol.findMøde(mødeID);

            aktuelMedarbejder.TilknytMøde(aktuelMøde); 
        }
    }
}
